/* stylelint-disable comment-empty-line-before */
/**
 * 这里是uni-app内置的常用样式变量
 *
 * uni-app 官方扩展插件及插件市场（https://ext.dcloud.net.cn）上很多三方插件均使用了这些样式变量
 * 如果你是插件开发者，建议你使用scss预处理，并在插件代码中直接使用这些变量（无需 import 这个文件），方便用户通过搭积木的方式开发整体风格一致的App
 *
 */

/**
 * 如果你是App开发者（插件使用者），你可以通过修改这些变量来定制自己的插件主题，实现自定义主题功能
 *
 * 如果你的项目同样使用了scss预处理，你也可以直接在你的 scss 代码中使用如下变量，同时无需 import 这个文件
 */

/* 颜色变量 */

/* 行为相关颜色 */
$uni-color-primary: #007aff;
$uni-color-success: #4cd964;
$uni-color-warning: #f0ad4e;
$uni-color-error: #dd524d;

/* 文字基本颜色 */
$uni-text-color: #333; // 基本色
$uni-text-color-inverse: #fff; // 反色
$uni-text-color-grey: #999; // 辅助灰色，如加载更多的提示信息
$uni-text-color-placeholder: #808080;
$uni-text-color-disable: #c0c0c0;

/* 背景颜色 */
$uni-bg-color: #fff;
$uni-bg-color-grey: #f8f8f8;
$uni-bg-color-hover: #f1f1f1; // 点击状态颜色
$uni-bg-color-mask: rgb(0 0 0 / 40%); // 遮罩颜色

/* 边框颜色 */
$uni-border-color: #c8c7cc;

/* 尺寸变量 */

/* 文字尺寸 */
$uni-font-size-sm: 12px;
$uni-font-size-base: 14px;
$uni-font-size-lg: 16;

/* 图片尺寸 */
$uni-img-size-sm: 20px;
$uni-img-size-base: 26px;
$uni-img-size-lg: 40px;

/* Border Radius */
$uni-border-radius-sm: 2px;
$uni-border-radius-base: 3px;
$uni-border-radius-lg: 6px;
$uni-border-radius-circle: 50%;

/* 水平间距 */
$uni-spacing-row-sm: 5px;
$uni-spacing-row-base: 10px;
$uni-spacing-row-lg: 15px;

/* 垂直间距 */
$uni-spacing-col-sm: 4px;
$uni-spacing-col-base: 8px;
$uni-spacing-col-lg: 12px;

/* 透明度 */
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度

/* 文章场景相关 */
$uni-color-title: #2c405a; // 文章标题颜色
$uni-font-size-title: 20px;
$uni-color-subtitle: #555; // 二级标题颜色
$uni-font-size-subtitle: 18px;
$uni-color-paragraph: #3f536e; // 文章段落颜色
$uni-font-size-paragraph: 15px;

// 文本溢出样式，clamp到多少行溢出时显示缩略字符
@mixin text-clamp($clamp: 1) {
  display: -webkit-box;
  overflow: hidden;
  line-height: normal;
  text-overflow: ellipsis;
  word-break: break-all;
  white-space: normal;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: $clamp;
}

@mixin box-shadow-bottom {
  box-shadow: 0 1px 1px rgba($color: black, $alpha: 0.1);
}

@mixin box-shadow {
  box-shadow:
    0 1px 5px rgba(0, 0, 0, 0.05),
    0 1px 5px rgba(0, 0, 0, 0.1);
}
@mixin box-shadow-long {
  box-shadow:
    0 1px 10px rgba(0, 0, 0, 0.1),
    0 1px 8px rgba(0, 0, 0, 0.1);
}

@mixin flex-center {
  display: flex;
  align-items: center;
  justify-content: center;
}

// 边框
@mixin border-bottom($color: $ui-color-border) {
  position: relative;
  &::after {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    height: 1px;
    content: '';
    background-color: $color;
    transform: scaleY(0.5);
    transform-origin: center;
  }
}
@mixin border-top($color: $ui-color-border) {
  position: relative;
  &::before {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    height: 1px;
    content: '';
    background-color: $color;
    transform: scaleY(0.5);
    transform-origin: center;
  }
}
@mixin border-right($color: $ui-color-border) {
  position: relative;
  &::before {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: 1px;
    height: 100%;
    content: '';
    background-color: $color;
    transform: scaleX(0.5);
    transform-origin: center;
  }
}

// 1px边框
@mixin scale-hairline-common($color, $top, $right, $bottom, $left) {
  position: absolute;
  top: $top;
  right: $right;
  bottom: $bottom;
  left: $left;
  z-index: 1;
  display: block;
  content: '';
  background-color: $color;
}
@mixin hairline($direction, $color: $ui-color-border, $radius: 0) {
  @if ($direction == 'top') {
    border-top: 1px solid $color;
    html:not([data-scale]) & {
      @media (min-resolution: 2dppx) {
        position: relative;
        border-top: none;
        &::before {
          @include scale-hairline-common($color, 0, auto, auto, 0);
          width: 100%;
          height: 1px;
          transform: scaleY(0.5);
          transform-origin: 50% 50%;
          @media (min-resolution: 3dppx) {
            transform: scaleY(0.33);
          }
        }
      }
    }
  }
  @if ($direction == 'right') {
    border-right: 1px solid $color;
    html:not([data-scale]) & {
      @media (min-resolution: 2dppx) {
        position: relative;
        border-right: none;
        &::after {
          @include scale-hairline-common($color, 0, 0, auto, auto);
          width: 1px;
          height: 100%;
          background: $color;
          transform: scaleX(0.5);
          transform-origin: 100% 50%;
          @media (min-resolution: 3dppx) {
            transform: scaleX(0.33);
          }
        }
      }
    }
  }
  @if ($direction == 'bottom') {
    border-bottom: 1px solid $color;
    html:not([data-scale]) & {
      @media (min-resolution: 2dppx) {
        position: relative;
        border-bottom: none;
        &::after {
          @include scale-hairline-common($color, auto, auto, 0, 0);
          width: 100%;
          height: 1px;
          transform: scaleY(0.5);
          transform-origin: 50% 100%;
          @media (min-resolution: 3dppx) {
            transform: scaleY(0.33);
          }
        }
      }
    }
  }
  @if ($direction == 'left') {
    border-left: 1px solid $color;
    html:not([data-scale]) & {
      @media (min-resolution: 2dppx) {
        position: relative;
        border-left: none;
        &::before {
          @include scale-hairline-common($color, 0, auto, auto, 0);
          width: 1px;
          height: 100%;
          transform: scaleX(0.5);
          transform-origin: 100% 50%;
          @media (min-resolution: 3dppx) {
            transform: scaleX(0.33);
          }
        }
      }
    }
  }
  @if ($direction == 'all') {
    border: 1px solid $color;
    border-radius: $radius;
    html:not([data-scale]) & {
      @media (min-resolution: 2dppx) {
        position: relative;
        border: none;
        &::before {
          position: absolute;
          top: 0;
          left: 0;
          box-sizing: border-box;
          width: 200%;
          height: 200%;
          pointer-events: none;
          content: '';
          border: 1px solid $color;
          border-radius: $radius * 2;
          transform: scale(0.5);
          transform-origin: 0 0;
          // @media (min-resolution: 3dppx) {
          //   width: 300%;
          //   height: 300%;
          //   border-radius: $radius * 3;
          //   transform: scale(0.33);
          // }
        }
      }
    }
  }
}

@supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) {
  .safe-area-plus {
    padding-bottom: calc(constant(safe-area-inset-bottom) + 10px) !important;
    padding-bottom: calc(env(safe-area-inset-bottom) + 10px) !important;
  }
}

@supports (not (bottom: constant(safe-area-inset-bottom))) and
  (not (bottom: env(safe-area-inset-bottom))) {
  .safe-area-plus {
    padding-bottom: 10px !important;
  }
}
